package com.caituo.idouyou.user.common.util;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

import com.caituo.idouyou.user.common.exception.ResultCodeIsNullException;
import com.sun.org.apache.bcel.internal.generic.NEW;
import com.sun.org.apache.xml.internal.resolver.helpers.PublicId;
import com.sun.xml.internal.bind.v2.TODO;

public class ReturnCodeUtil {
	
	public static Map codeMap = new HashMap<String,String>();
	
	static{
		
		/*业务错误代码*/
		codeMap.put("10000","代码测试");
		
		
		/*系统错误代码*/
		
		
	}
	
	public static String getCode(String value){
		if(value==null || "".equals(value)){
			return null;
		}
		if(codeMap==null||codeMap.size()==0){
			return null;
		}
		if(codeMap.containsValue(value)){
			Iterator it = codeMap.entrySet().iterator();
			while (it.hasNext()) {
				Map.Entry pairs = (Map.Entry) it.next();
				if(pairs.getValue()!=null && !"".equals(pairs.getValue()) && value.equals(pairs.getValue())){
					return (String)pairs.getKey();
				}
			}
		}
		return null;
	}
	

	/**
	 * 根据错误代码获取错误信息
	 * @param code 错误代码
	 * @return 错误信息
	 * @author zhutao
	 */
	public static String getValue(String code){
		if(code==null || "".equals(code) ){
			return null;
		}
		if(codeMap.size()==0){
			return null;
		}
		if(!codeMap.containsKey(code)){
			return null;
		}
		return (String)codeMap.get(code);
	}
	/**
	 * 往 codeMap 添加数据，如果key相同则替换
	 * @param code 错误代码	
	 * @param value 错误信息
	 * @param flag 是否替换
	 * @throws ResultCodeIsNullException
	 * @author zhutao
	 */
	public static void setValue(String code,String value,boolean flag) throws ResultCodeIsNullException {
		if(code==null || "".equals(code)){
			throw new ResultCodeIsNullException("code is null");
		}
		if(flag){
			codeMap.put(code,value);
		}else{
			throw new ResultCodeIsNullException("the map have same key at the ReturnCodeUtil class,but can not replace");
		}
	}
	/**
	 * 往 codeMap 添加数据,如果key相同默认替换相同key的值,可以调用setValue(String code,String value,boolean flag)不替换
	 * @param code 错误代码	
	 * @param value 错误信息
	 * @throws ResultCodeIsNullException
	 * @author zhutao
	 */
	public static void setValue(String code,String value) throws ResultCodeIsNullException{
		setValue(code, value,true);
	}

}
